home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 8.1 KB | 195 lines |
- 1 CLS : KEY OFF : SCREEN 0 : WIDTH 80
- 2 CLEAR ,15000
- 3 DEF SEG = 0 : BUFFER = &HEA60
- 4 GOTO 1090
- 100 PRINT "************************************************************"
- 110 PRINT "** CODE-MASTER **"
- 120 PRINT "** **"
- 130 PRINT "** **"
- 140 PRINT "** VERSION 1.1 (64K) AUGUST 29, 1982 **"
- 150 PRINT "** **"
- 160 PRINT "** ALLOWS YOU TO CREATE, ENCODE AND DECODE MESSAGES **"
- 170 PRINT "** USING THE DISKETTE OR CASSETTE **"
- 180 PRINT "** (DEFAULTS TO CURRENT DEVICE) **"
- 190 PRINT "************************************************************"
- 200 LOCATE 12,1
- 210 PRINT "ENTER YOUR SELECTION -
- 220 PRINT
- 230 PRINT "1. = CLEAR TEXT BUFFER
- 240 PRINT "2. = ENTER OR UPDATE TEXT FOR ENCRYPTION
- 250 PRINT "3. = ENCODE MESSAGE
- 260 PRINT "4. = DECODE MESSAGE AND PRINT IT
- 270 PRINT "5. = SAVE ENCODED MESSAGE TO DISKETTE OR CASSETTE
- 280 PRINT "6. = LOAD ENCODED MESSAGE FROM DISKETTE OR CASSETTE
- 290 LOCATE 12,30 : INPUT A
- 300 IF (A>6) OR (A<1) THEN CLS : GOTO 100
- 310 ON A GOTO 1000,2000,3000,4000,5000,6000
- 1000 CLS
- 1010 PRINT "************************************************************"
- 1020 PRINT "** CLEAR TEXT BUFFER **"
- 1030 PRINT "** THE BUFFER FOR THE PLAIN TEXT MESSAGE IS (23 X 80) -1 **"
- 1040 PRINT "** CHARACTERS IN LENGTH. AND STARTS AT 60000 DECIMAL **"
- 1050 PRINT "** IT WILL TAKE ABOUT 10 SEC TO CLEAR BUFFER TO ALL **"
- 1060 PRINT "** SPACES. **"
- 1070 PRINT "************************************************************"
- 1080 LOCATE 10,1
- 1090 PRINT "PLEASE STAND BY FOR APPROX 10 SEC -
- 1100 FOR X = BUFFER TO BUFFER + &H72F
- 1110 POKE X,32
- 1120 NEXT
- 1130 LOCATE 25,1 : PRINT "PRESS ANY KEY TO CONTINUE - ";:INPUT A$
- 1140 CLS : GOTO 100
- 2000 CLS
- 2010 PRINT "************************************************************"
- 2020 PRINT "** ENTER OR UPDATE TEXT FOR ENCRYPTION **"
- 2030 PRINT "** **"
- 2040 PRINT "** THE PRESENT MESSAGE BUFFER WILL BE DISPLAYED, AND **"
- 2050 PRINT "** THE CURSOR WILL BE RETURNED TO HOME. **"
- 2060 PRINT "** ENTER YOUR TEXT USING - **"
- 2070 PRINT "** THE 4 CURSOR CONTROL KEYS - UP, DOWN, LEFT, RIGHT **"
- 2080 PRINT "** THE ENTIRE ASCII CHARACTER SET - **"
- 2090 PRINT "** THE BACKSPACE KEY AND THE ENTER KEY **"
- 2100 PRINT "** **"
- 2110 PRINT "** FINALLY, WHEN YOU ARE FINISHED ENTERING THE TEXT - **"
- 2120 PRINT "** PRESS ALT E (FOR EXIT) TO RETURN TO THE MENU **"
- 2130 PRINT "** **"
- 2140 PRINT "************************************************************"
- 2150 '
- 2160 LOCATE 25,1 : PRINT "PRESS ENTER TO CONTINUE - " ;
- 2170 A$ = INKEY$ : IF A$ = "" THEN 2170 ELSE CLS : LOCATE ,,1
- 2180 FOR X = BUFFER TO BUFFER + &H72F
- 2190 PRINT CHR$(PEEK(X));
- 2200 NEXT
- 2210 LOCATE 25,1 : PRINT "USE ALT E TO EXIT " : LOCATE 1,1,1
- 2220 A$ = INKEY$ : IF A$ = "" THEN 2220
- 2230 IF CSRLIN > 23 THEN LOCATE 23,POS(0)
- 2240 IF LEN(A$) = 2 THEN 2290
- 2250 IF (ASC(A$) = 8) AND (POS(0) > 1) THEN LOCATE CSRLIN,POS(0)-1 : PRINT " "; :LOCATE CSRLIN,POS(0)-1 : POKE BUFFER+(CSRLIN-1)*80+POS(0)-1,32:GOTO 2220
- 2260 IF (ASC(A$) = 13) AND (CSRLIN <23) THEN LOCATE CSRLIN+1,1 : GOTO 2220
- 2270 IF (ASC(A$) = 13) AND (CSRLIN = 23) THEN LOCATE 23,1 :GOTO 2220
- 2280 POKE BUFFER + (CSRLIN-1)*80 + POS(0)-1,ASC(A$) : PRINT A$; : GOTO 2220
- 2290 B$ = MID$(A$,2,1) : B = ASC(B$)
- 2300 IF B = 71 THEN LOCATE 1,1
- 2310 IF (B = 72) AND (CSRLIN > 1) THEN LOCATE CSRLIN-1,POS(0)
- 2320 IF (B = 75) AND (POS(0) > 1) THEN LOCATE CSRLIN,POS(0)-1
- 2330 IF (B = 77) AND (POS(0) < 80) THEN LOCATE CSRLIN,POS(0)+1
- 2340 IF (B = 80) AND (CSRLIN < 23) THEN LOCATE CSRLIN+1,POS(0)
- 2350 IF (B = 18) THEN CLS : GOTO 100
- 2360 GOTO 2220
- 3000 CLS
- 3010 PRINT "************************************************************"
- 3020 PRINT "** ENCODE THE PLAIN TEXT MESSAGE **"
- 3030 PRINT "** **"
- 3040 PRINT "** ENTER KEY #1 TO INITIALIZE THE RANDOM GENERATOR **"
- 3050 PRINT "** ENTER KEY #2 TO STEP YOU PART WAY INTO THE CODE **"
- 3060 PRINT "** **"
- 3070 PRINT "** THE PROGRAM WILL TAKE THE PLAIN TEXT IN MEMORY AT **"
- 3080 PRINT "** 60000 TO 61839 AND ENCRYPT IT, PLACING IT IN MEMORY **"
- 3090 PRINT "** AT 62000 TO 63839. **"
- 3100 PRINT "** **"
- 3110 PRINT "** FINALLY, THE PROGRAM WILL DISPLAY THE ENCRYPTED **"
- 3120 PRINT "** TEXT **"
- 3130 PRINT "** **"
- 3140 PRINT "************************************************************"
- 3150 '
- 3160 LOCATE 17,1 : CLEAR ,15000 : DEF SEG = 0 : BUFFER = &HEA60
- 3170 PRINT "ENTER KEY #1 (FROM -32000 TO 32000) ";:INPUT A
- 3180 IF (A<-32000) OR (A>32000) THEN CLS : GOTO 3000
- 3190 RANDOMIZE A
- 3200 LOCATE 19,1
- 3210 PRINT "ENTER KEY #2 (FROM 1 TO 1000) ";: INPUT A
- 3220 IF (A<1) OR (A>1000) THEN LOCATE 19,30 : PRINT " ":GOTO 3200
- 3230 FOR X = 1 TO A
- 3240 B = RND
- 3250 NEXT
- 3260 '
- 3270 LOCATE 25,1 : PRINT "READY TO ENCODE - PRESS ENTER TO BEGIN ";:INPUT A$
- 3280 CLS : PRINT "PLEASE STAND BY - ENCODING REQUIRES APPROX 30 SEC - "
- 3290 FOR X = BUFFER TO BUFFER + &H72F
- 3300 CYPHER = INT(RND * 255)
- 3310 CODEDTEXT = CYPHER + PEEK(X)
- 3320 IF CODEDTEXT > 255 THEN CODEDTEXT = CODEDTEXT - 256
- 3330 POKE X+&H7D0,CODEDTEXT
- 3340 NEXT
- 3350 LOCATE 25,1 : PRINT "CODING COMPLETE - PRESS ENTER TO VIEW ";: INPUT A$
- 3360 CLS
- 3370 FOR X = BUFFER + &H7D0 TO BUFFER + &HEFF
- 3380 PRINT CHR$(PEEK(X));
- 3390 NEXT
- 3400 LOCATE 25,1 : PRINT "PRESS ENTER TO RETURN TO MENU - ";: INPUT A$
- 3410 CLS : GOTO 100
- 4000 CLS
- 4010 PRINT "************************************************************"
- 4020 PRINT "** DECODE THE ENCRYPTED MESSAGE **"
- 4030 PRINT "** **"
- 4040 PRINT "** ENTER KEY #1 TO INITIALIZE THE RANDOM GENERATOR **"
- 4050 PRINT "** ENTER KEY #2 TO STEP YOU PART WAY INTO THE CODE **"
- 4060 PRINT "** **"
- 4070 PRINT "** THE PROGRAM WILL TAKE THE ENCRYPTED TEXT IN MEMORY AT **"
- 4080 PRINT "** 62000 TO 63839 AND DECODE IT, PLACING IT IN MEMORY **"
- 4090 PRINT "** AT 60000 TO 61839. **"
- 4100 PRINT "** **"
- 4110 PRINT "** FINALLY, THE PROGRAM WILL DISPLAY THE DECODED **"
- 4120 PRINT "** TEXT **"
- 4130 PRINT "** **"
- 4140 PRINT "************************************************************"
- 4150 '
- 4160 LOCATE 17,1 : CLEAR ,15000 : DEF SEG = 0 : BUFFER = &HEA60
- 4170 PRINT "ENTER KEY #1 (FROM -32000 TO 32000) ";:INPUT A
- 4180 IF (A<-32000) OR (A>32000) THEN CLS : GOTO 4000
- 4190 RANDOMIZE A
- 4200 LOCATE 19,1
- 4210 PRINT "ENTER KEY #2 (FROM 1 TO 1000) ";: INPUT A
- 4220 IF (A<1) OR (A>1000) THEN LOCATE 19,30 : PRINT " ":GOTO 3200
- 4230 FOR X = 1 TO A
- 4240 B = RND
- 4250 NEXT
- 4260 '
- 4270 LOCATE 25,1 : PRINT "READY TO DECODE - PRESS ENTER TO BEGIN ";:INPUT A$
- 4280 CLS : PRINT "PLEASE STAND BY - DECODING REQUIRES APPROX 30 SEC - "
- 4290 FOR X = BUFFER TO BUFFER + &H72F
- 4300 CYPHER = INT(RND * 255)
- 4310 CODEDTEXT = PEEK(X+2000) - CYPHER
- 4320 IF CODEDTEXT < 0 THEN CODEDTEXT = CODEDTEXT + 256
- 4330 POKE X,CODEDTEXT
- 4340 NEXT
- 4350 LOCATE 25,1 : PRINT "DECODING COMPLETE - PRESS ENTER TO VIEW ";: INPUT A$
- 4360 CLS
- 4370 FOR X = BUFFER TO BUFFER + &H72F
- 4380 PRINT CHR$(PEEK(X));
- 4390 NEXT
- 4400 LOCATE 25,1 : PRINT "PRESS ENTER TO RETURN TO MENU - ";: INPUT A$
- 4410 CLS : GOTO 100
- 5000 CLS
- 5010 PRINT "************************************************************"
- 5020 PRINT "** SAVE ENCODED MESSAGE TO DISKETTE OR CASSETTE **"
- 5030 PRINT "************************************************************"
- 5040 '
- 5050 LOCATE 5,1
- 5060 INPUT "ENTER THE FILENAME TO SAVE TO - (8 CHAR MAX) ";A$
- 5070 LOCATE 10,1
- 5080 PRINT "WARNING - MAKE SURE THE CASSETTE IS IN RECORD OR DISKETTE INSERTED
- 5090 PRINT "THEN, PRESS ENTER -
- 5100 INPUT B$
- 5110 LOCATE 15,1
- 5120 PRINT "SAVING - ";A$
- 5130 BSAVE A$,(BUFFER + &H7D0),&H730
- 5140 LOCATE 25,1 : PRINT "SAVE COMPLETE - PRESS ENTER TO RETURN TO MENU ";
- 5150 A$ = INKEY$ : IF A$ = "" THEN 5150 ELSE CLS : GOTO 100
- 6000 CLS
- 6010 PRINT "************************************************************"
- 6020 PRINT "** LOAD ENCODED MESSAGE FROM DISKETTE OR CASSETTE **"
- 6030 PRINT "************************************************************"
- 6040 '
- 6050 LOCATE 5,1
- 6060 INPUT "ENTER THE FILENAME TO READ FROM - (8 CHAR MAX) ";A$
- 6070 LOCATE 10,1
- 6080 PRINT "WARNING - MAKE SURE THE CASSETTE IS IN PLAY OR DISK INSERTED
- 6090 PRINT "THEN, PRESS ENTER -
- 6100 INPUT B$
- 6110 LOCATE 15,1
- 6120 PRINT "LOADING - ";A$
- 6130 BLOAD A$
- 6140 LOCATE 25,1 : PRINT "LOAD COMPLETE - PRESS ENTER TO RETURN TO MENU ";
- 6150 A$ = INKEY$ : IF A$ = "" THEN 5150 ELSE CLS : GOTO 100
-